package com.baor.config;


import com.baor.domain.UserVO;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class  TokenService {

    @Autowired
    private JwtConfig jwtConfig;

    public String createToken(UserVO user){
        Map<String,Object> map = new HashMap<>();
        map.put("user",user);
        return this.jwtConfig.createToken(map);
    }
    public Integer getUserId(String token){
        return getUserInfo(token).getId();
    }
    public UserVO getUserInfo(String token){
        Map<String,Object> res = (Map<String, Object>) getClaims(token).get("user");
        UserVO vo = new UserVO();
        System.out.println(res.get("id"));

        vo.setId((Integer) res.get("id"));
        vo.setUsername(res.get("username").toString());
        vo.setPassword(res.get("password").toString());

        return vo;
    }
    public boolean isExpired(String token){
        Claims claims = getClaims(token);
        return  claims != null;
    }

    public Claims getClaims(String token){
        return jwtConfig.parseToken(token);
    }

    public String subToken(String token){
        return token.substring(token.indexOf(".")+1,token.lastIndexOf("."));
    }
}
